package dataStructure.stack;

//import java.util.Scanner;
// 顺序栈的应用

import com.sun.scenario.effect.impl.sw.java.JSWBlend_SRC_OUTPeer;

public class StackApply {

    public static void main(String[] args) {
        ArrayStack arrayStack = new ArrayStack(5);
        arrayStack.push(10);
        arrayStack.push(10);
        arrayStack.push(10);
        arrayStack.push(10);
        arrayStack.display();
        System.out.println("括号匹配测试");

        test();
        System.out.println("进制转换测试");
        test2(2);
    }

    // 括号匹配算法
    public static void test(){
        // 第一步初始化一个栈
        ArrayStack temStack = new ArrayStack(100);
        // 定义两个字符，一个用来截取目标字符串的字符。
        char tempChar;
        String paraString = "{{}}[][][}";

        // 第二步，进行循环遍历，将字符串进行入栈出栈操作
        for (int i = 0; i < paraString.length(); i++) {
             tempChar  = paraString.charAt(i);

            // 括号有(),[],{}所以选择switch结构判断比较方便
            switch (tempChar) {
                // 左括号入栈
                case '(':
                case '[':
                case '{': {
                    temStack.push(tempChar);
                    break;
                }
                // 右括号出栈
                case ')':
                    if (temStack.pop() != '(') {
                        System.out.println(") 匹配出错 不符合");
                        break ;
                    } // Of if
                    break; // 当匹配到左括号时，判断它右边第一个字符如果不是（，break，重新匹配它右            边这个字符类型。是，出栈
                case ']':
                    if (temStack.pop() != '[') {
                        System.out.println("] 匹配出错 不符合");
                        break ;
                    } // Of if
                    break;
                case '}':
                    if (temStack.pop() != '{') {
                        System.out.println("} 匹配出错 不符合");
                        break ;
                    } // Of if
                    break;
                default: ; // 其他类型直接啥也不做
            }// Of switch
        } // Of for
        if (temStack.length() != 0) {
            System.out.println("匹配失败");
        }else {
            System.out.println("匹配成功");
        }
//        System.out.println("匹配成功");
    }

    // 任意进制转换法
    public static  void test2(int jinzhi){
        int x = 16;
        String str = "0123456789ABCDEF";
        int temp;
        ArrayStack temStack = new ArrayStack(100);

        while (x!=0){
            temp =  x % jinzhi;
            temStack.push(temp);
            x = x / jinzhi;
        }
 /*       if (jinzhi<=10){
            temStack.display();
        }else{
            System.out.println("大于10进制");
            while (temStack.length()!=0){
                int result =temStack.pop();
//                System.out.println(result);
                char finalRes = str.charAt(result);
                System.out.println("finalRes:"+ finalRes);
            }
        }*/

        while (temStack.length()!=0){
            int result =temStack.pop();
//                System.out.println(result);
            char finalRes = str.charAt(result);
            System.out.println("finalRes:"+ finalRes);
        }
    }
}
